Amazon S3 に Visual Studio 2022 で作成した ClickOnce を発行してみた
いわさです。
.NETデスクトップアプリケーションを配信する方法のひとつにClickOnceというものがあります。
ClickOnce自体は.NET Framework 2.0あたりから存在していたと記憶していますが、最新のVisual Studio 2022での発行の流れを確認したかったので、おさらいを兼ねてAmazon S3バケットで静的ホスティングを有効化し、パブリックインターネットで配信できる状態のものを試してみました。
その際に、AWS Tooklit for Visual Studio 2022 で ClickOnceをデプロイすることができるのかも確認してみたのですが、この拡張機能から直接ClickOnceアプリケーションを発行することは出来ないので、ホスティングサービスを構成し手動でClickOnceアプリケーションを発行した上で配置する必要があります。
この記事では、Windows向けに作成した単純な.NET Framework 4.7.2のコンソールアプリケーションを、Visual Studio 2022 を使ってClickOnceで発行し、静的ホスティングを有効化したS3バケットからインストールさせるための手順を記します。
Amazon S3バケットを作成する
ClickOnceの発行ウィザードの中でデプロイURLが必要なので、先にS3静的ホストを作成します。
厳密にはあとからClickOnceマニフェストファイルの発行URLを更新することも可能です。
S3バケットはパブリックアクセスブロックをオフにし、以下のバケットポリシーを設定します。
これによって認証なしでパブリックインターネットから誰でもアクセス出来るバケットとなります。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::hoge0601clickonce/*" } ] }
さらに、S3の静的ウェブサイトホスティング機能を有効化します。
これによって、S3で静的コンテンツをWebサイトとして配信することが出来るようになります。
これでS3バケットへClickOnceアプリケーションを配置出来る状態になりました。
この記事では、不特定多数にClickOnceアプリケーションを公開する前提となっている点にご注意ください。
Visual Studio 2022 で ClickOnceアプリケーションを作成
今回は .NET Framework 4.7.2 コンソールアプリケーションを作成し、ClickOnceアプリケーションとして配信してみます。
コンソールアプリ自体はエントリポイントだけの最小のやつです。(using句整理するの忘れてました)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { Console.WriteLine("hoge!!!"); Console.ReadKey(); } } }
コンソールアプリケーションのプロジェクトを右クリックし、「発行(B)…」メニューを選択します。
「このアプリケーションを公開する場所」はデフォルトのままpublish
にしておきます。
どのようにインストールするか、で「Webサイトから(W)」を選択し、URLには先程作成されたS3バケット静的ホスティングURLを指定します。
あとはバージョンや署名など細かい設定があるのですがここでは割愛します。
詳細は以下をご確認ください。
ClickOnce を使用して .NET Windows デスクトップ アプリケーションを配置する - Visual Studio (Windows) | Microsoft Docs
ローカルフォルダに出力されたClickOnceアプリケーションをマニフェストなど含めて一式S3バケットへアップロードします。
ブラウザでアクセス
Webブラウザで発行時に出力されたURLへアクセスします。
.NET Frameworkのインストール案内が表示されますがインストール済みなのでここは省略し、「起動」のリンクを押下します。
アプリケーションのインストールが開始されるのでインストールします。
アプリケーションが実行されました。
次回以降はメニューのインストール済みClickOnceアプリケーションから起動出来ます。
これで、バージョンアップ時なども配信されるようになります。
さいごに
本日はVisual Studio 2022を使ってClickOnceアプリケーションを発行し、S3バケットから配信してみました。
Azure Blobの静的ホストで配信している記事をみかけたのでS3でも問題なく出来るだろうと思っていましたが、大丈夫でした。
また、Visual Studio もいまや2022ですが、あまりClickOnceの発行ウィザードは変わってないような記憶です。
特に違和感なく使用出来たので、数年経っているClickOnceの技術記事を有効なのではないかと思いました。